package com.cskaoyan.javase.basic._3variable._5conversion;

/**
 * @description: 表达式的类型提升
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * 多种基本数据类型数据参与运算时，如果表达式当中存在多种数据类型，那么结果将会是什么呢？
 * 根据表达式中"取值范围最大"的数据类型决定的,
 *      这个过程称之为"表达式的类型提升": 表达式的运算结果会自动提升到表达式中最大取值范围的数据类型
 *
 * 细节注意:
 *      1.byte,short,char三种数据类型参与运算,全部直接提升到int,而不是三种之一
 *      2.String字符串可以做加号的拼接操作,一旦表达式中有字符串参与拼接运算,不管它是在哪里做的拼接,结果一定是字符串类型
 *      3,char类型参与运算,是编码值参与运算
 */
public class Demo3 {
    public static void main(String[] args) {
        //int a = 10;
        //byte b = 20;
        //char c = 'a';
        //double d = 0.1;
        //
        //double sum = a + b + c + d;

        byte a = 1;
        byte b = 2;
        int sum = a + b;

        short c = 10;
        sum = a + b + c;


        String d = "hello";

        //Incompatible types. Found: 'java.lang.String', required: 'int'
        //sum = a + b + d + c;

        String s = a + b + d + c;

    }
}
